package com.maimang.platform.dsp.service;

import com.alibaba.fastjson.JSONObject;
import com.maimang.platform.dsp.entity.Advertiser;
import com.maimang.platform.dsp.entity.AdvertiserShort;

import java.util.List;


/**
 * @author Rocky
 * @version 1.0.0
 * @classname AdvertiserService
 * @description <br>广告主 服务层</br>
 * @date 2019-07-31 10:07:36
 * @email jintaozhao@qq.com
 */
public interface AdvertiserService {
	/**
	 * 查询广告主信息
	 *
	 * @param id 广告主ID
	 * @return 广告主信息
	 */
	Advertiser selectAdvertiserById(Long id);


	/**
	 * 查询广告主信息（简约版）
	 *
	 * @param id 广告主id
	 * @return 广告主信息
	 */
	AdvertiserShort selectShortById(Long id);

	/**
	 * 查询广告主列表
	 *
	 * @param advertiser 广告主信息
	 * @return 广告主集合
	 */
	List<Advertiser> selectAdvertiserList(Advertiser advertiser);

	/**
	 * 查询广告主列表
	 *
	 * @param advertiser 广告主信息
	 * @return 广告主集合
	 */
	List<AdvertiserShort> selectShortList(Advertiser advertiser);

	/**
	 * 查询符合条件的数量
	 *
	 * @param advertiser 查询条件
	 * @return
	 */
	int selectCount(Advertiser advertiser);

	/**
	 * 新增广告主
	 *
	 * @param advertiser 广告主信息
	 * @return 结果
	 */
	int insertAdvertiser(Advertiser advertiser);

	/**
	 * 修改广告主
	 *
	 * @param advertiser 广告主信息
	 * @return 结果
	 */
	int updateAdvertiser(Advertiser advertiser);

	/**
	 * 删除广告主信息
	 *
	 * @param ids 需要删除的数据ID
	 * @return 结果
	 */
	int deleteAdvertiserByIds(String ids);


	/**
	 * 获取账户授权下管理的广告主id列表，再根据id列表信息请求广告主api接口并处理返回广告主详情结果集
	 *
	 * @param advertiserId
	 * @return
	 */
	void getAdvertisers(String advertiserId) throws InterruptedException;

	/**
	 * 获取广告主代理商下属所有广告主id
	 *
	 * @return 广告主列表id
	 */
	void getAdvertiserIds() throws InterruptedException;

	/**
	 * @param ids 广告主id列表
	 */
	void getAdvertiserDetails(long[] ids);

	/**
	 * 重试同步
	 * 针对未同步或同步失败的广告主id列表
	 */
	void retryAdvertisers();

	/**
	 * 创建广告主
	 *
	 * @param advertiser 广告主对象信息
	 * @return
	 */
	JSONObject createAdvertiser(Advertiser advertiser);


	/**
	 * 修改广告主
	 *
	 * @param advertiser 广告主对象信息
	 * @return
	 */
	JSONObject modifyAdvertiser(Advertiser advertiser);
}
